﻿// MaPhotosListCtrl
ctrls.controller('MaPhotosListCtrl', function ($scope, $http, $routeParams, $location) {
    /* Định nghĩa biến toàn cục */
    $scope.data = {};
    $scope.strings = {};
    $scope.style = {};
    $scope.variable = {};
    $scope.tblResult = {};
    // Gán giá trị init
    $scope.variable.ShowSearchPane = true;
    $scope.tblResult.Sortable = {};
    $scope.tblResult.Page = 1;
    $scope.tblResult.Options = $gridHelper.optBase({ width: 920 });
    /* Định nghĩa phương thức xử lý */
    // Xử lý lấy chuỗi resource
    $scope.getStrings = function () {
        $pc(function () {
            $scope.strings = {
                Title: $nm('ADM.MA.PHOTOS.LIST.Title'),
                PhotoCd: $nm('ADM.MA.PHOTOS.LIST.PhotoCd'),
                PhotoName: $nm('ADM.MA.PHOTOS.LIST.PhotoName'),
                DeleteFlag: $nm('ADM.MA.PHOTOS.LIST.DeleteFlag'),
                Search: $nm('ADM.MA.PHOTOS.LIST.Search'),
                ColPhotoCd: $nm('ADM.MA.PHOTOS.LIST.ColPhotoCd'),
                ColPhotoName: $nm('ADM.MA.PHOTOS.LIST.ColPhotoName'),
                ColSortKey: $nm('ADM.MA.PHOTOS.LIST.ColSortKey'),
                ColVersionNo: $nm('ADM.MA.PHOTOS.LIST.ColVersionNo'),
                ColUpdateUser: $nm('ADM.MA.PHOTOS.LIST.ColUpdateUser'),
                ColUpdateDate: $nm('ADM.MA.PHOTOS.LIST.ColUpdateDate'),
                ColDeleteFlag: $nm('ADM.MA.PHOTOS.LIST.ColDeleteFlag'),
                Add: $nm('ADM.MA.PHOTOS.LIST.Add'),
                UpdateAll: $nm('ADM.MA.PHOTOS.LIST.UpdateAll'),
                ShowHideSearch: $nm('ADM.MA.PHOTOS.LIST.ShowHideSearch'),
                Edit: $nm('ADM.MA.PHOTOS.LIST.Edit'),
                Copy: $nm('ADM.MA.PHOTOS.LIST.Copy')
            };
        });
    };
    // Xử lý init
    $scope.init = function () {
        $pc({
            http: $http,
            url: '/ajx/adm/ma/photos/list.aspx/InitLayout',
            data: {},
            success: function (data) {
                if (!$dataHelper.toBoolean(data.HasAuth)) {
                    window.location = '/adm/login.html';
                    return;
                }
                // Gán dữ liệu 
                $scope.data = data;
                // Gán dữ liệu table
                $scope.tblResult.Limit = data.Limit;
                // Tiến hàng filter
                $scope.filter();
                $ti('txtPhotoCd');
            }
        });
    };
    // Xử lý filter
    $scope.filter = function () {
        $pc({
            http: $http,
            url: '/ajx/adm/ma/photos/list.aspx/Filter',
            data: function () {
                var data = { Offset: 0, Limit: 10 };
                // Lấy giá trị Limit
                if ($scope.tblResult.Limit) {
                    data.Limit = $scope.tblResult.Limit;
                }
                // Lấy giá trị offset
                if ($scope.tblResult.Page) {
                    data.Offset = ($scope.tblResult.Page - 1) * $scope.tblResult.Limit;
                }
                // Lấy giá trị orderBy
                if ($scope.tblResult.Sortable) {
                    data.OrderBy = $scope.tblResult.OrderBy;
                    data.AscDesc = $scope.tblResult.AscDesc;
                }
                // Gán dữ liệu search
                data.PhotoCd = $scope.data.HdnPhotoCd;
                data.PhotoName = $dataHelper.toSearchName($scope.data.HdnPhotoName);
                data.DeleteFlag = $scope.data.HdnDeleteFlag;
                // Kết quả trả về
                return data;
            },
            success: function (data) {
                $scope.tblResult.Total = data.Total;
                $scope.tblResult.ListData = data.ListData;
            }
        });
    };
    // Xử lý sort
    $scope.sortResult = function (data) {
        $pc(function () {
            $scope.tblResult.OrderBy = data.orderBy;
            $scope.tblResult.AscDesc = data.ascDesc;
            $scope.filter();
        });
    };
    // Xử lý thêm
    $scope.add = function () {
        $pc(function () {
            $location.path('/adm/master/photos/entry/add');
        });
    };
    // Xử lý lưu thông tin cập nhật
    $scope.updateAll = function () {
        $pc({
            http: $http,
            url: '/ajx/adm/ma/photos/list.aspx/UpdateAll',
            data: function () {
                var data = { ListData: [] };
                // Gán dữ liệu cập nhật
                for (var idx in $scope.tblResult.ListData) {
                    var obj = $scope.tblResult.ListData[idx];
                    if (obj.HasChanged) {
                        data.ListData.push({
                            LocaleCd: obj.LocaleCd,
                            PhotoCd: obj.PhotoCd,
                            PhotoName: obj.PhotoName,
                            PhotoSearchName: $dataHelper.toSearchName(obj.PhotoName),
                            SortKey: obj.SortKey,
                            DeleteFlag: obj.DeleteFlag
                        });
                    }
                }
                // Kết quả trả về
                return data;
            },
            success: function (data) {
                var info = { Show: true, Messages: data.Messages };
                $scope.alert = info;
                $scope.filter();
            },
            error: function (err) {
                $scope.alert = err;
            }
        });
    };

    // Ẩn/Hiện panel tìm kiếm
    $scope.showHidePanelSearch = function () {
        $pc(function () {
            $scope.variable.ShowSearchPane = !$scope.variable.ShowSearchPane;
        });
    };

    // Xử lý cập nhật
    $scope.search = function () {
        $pc(function () {
            $scope.data.HdnPhotoCd = $scope.data.PhotoCd
            $scope.data.HdnPhotoName = $scope.data.PhotoName;
            $scope.data.HdnDeleteFlag = $scope.data.DeleteFlag;
            $scope.filter();
        });
    };

    // Xử lý cập nhật
    $scope.edit = function (obj) {
        $pc(function () {
            $location.path('/adm/master/photos/entry/edit/' + obj.PhotoCd);
        });
    };

    // Xử lý sao chép
    $scope.copy = function (obj) {
        $pc(function () {
            $location.path('/adm/master/photos/entry/add/copy/' + obj.PhotoCd);
        });
    };

    // Xử lý thay đổi data
    $scope.tblResultChange = function (data, obj) {
        $pc(function () {
            obj.HasChanged = true;
        });
    };

    /* Định nghĩa các events */
    // Tiến hành lấy chuỗi resource
    $scope.getStrings();
    // Tiến hành xử lý init
    $scope.init();

    /* Đăng ký các events */
});